Package org.netbeans.modules.languages.pl_sql.editor.explorer.nodes

Source Code of org.netbeans.modules.languages.pl_sql.editor.explorer.nodes.OUserNode

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.netbeans.modules.languages.pl_sql.editor.explorer.nodes;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.Action;
import org.netbeans.modules.languages.pl_sql.editor.Utils;
import org.netbeans.modules.languages.pl_sql.editor.explorer.nodes.actions.ConnectAction;
import org.netbeans.modules.languages.pl_sql.editor.explorer.nodes.actions.DeleteAction;
import org.netbeans.modules.languages.pl_sql.editor.explorer.nodes.actions.DisconnectAction;
import org.netbeans.modules.languages.pl_sql.editor.explorer.nodes.actions.EditAction;
import org.netbeans.modules.languages.pl_sql.editor.explorer.nodes.actions.RefreshAction;
import org.netbeans.modules.languages.pl_sql.editor.oracletree.OUser;
import org.netbeans.modules.languages.pl_sql.editor.oracletree.RoleTypes;
import org.openide.ErrorManager;
import org.openide.actions.PropertiesAction;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.Children;
import org.openide.nodes.PropertySupport;
import org.openide.nodes.Sheet;
import org.openide.util.WeakListeners;
import org.openide.util.actions.SystemAction;
import org.openide.util.lookup.Lookups;

/**
*
* @author SUMsoft
*/
public class OUserNode extends AbstractNode implements PropertyChangeListener {

    private static final String ICON = "org/netbeans/modules/languages/pl_sql/editor/resources/User.png";
    private static final String ICON_CONNECTED = "org/netbeans/modules/languages/pl_sql/editor/resources/UserConnected.png";

    public OUserNode(OUser ou) {
        super(ou.getIsConnected() ? Children.create(new OUserNodeChildFactory(ou), true) : Children.LEAF, Lookups.singleton(ou));
        //super(Children.create(new OUserNodeChildFactory(ou), true), Lookups.singleton(ou));
        ou.addPropertyChangeListener(WeakListeners.propertyChange(this, ou));
        ChangeIcon();
    }

    private void ChangeIcon() {
        if (getOUser().getIsConnected()) {
            this.setIconBaseWithExtension(ICON_CONNECTED);
        } else {
            this.setIconBaseWithExtension(ICON);
        }
    }

    public void resetChildren() {
        if (getOUser().getIsConnected()) {
            this.setChildren(Children.create(new OUserNodeChildFactory(getOUser()), true));
        } else {
            this.setChildren(Children.LEAF);
        }
    }

    private OUser getOUser() {
        return getLookup().lookup(OUser.class);
    }

    @Override
    public String getDisplayName() {
        return getOUser().toString();
    }

    @Override
    public String getHtmlDisplayName() {
        if (getOUser().getIsConnected()) {
            return "<b>" + getDisplayName() + "</b>";
        } else {
            return null;
        }
    }

    @Override
    public Action[] getActions(boolean context) {
        if (context) {
            return super.getActions(context);
        } else {
            return new SystemAction[]{
                        SystemAction.get(ConnectAction.class),
                        SystemAction.get(DisconnectAction.class),
                        SystemAction.get(EditAction.class),
                        SystemAction.get(DeleteAction.class),
                        null,
                        SystemAction.get(RefreshAction.class),
                        null,
                        SystemAction.get(PropertiesAction.class)
                    };
        }
    }

    @Override
    public boolean canDestroy() {
        return true;
    }

    @Override
    protected Sheet createSheet() {

        Sheet sheet = Sheet.createDefault();
        Sheet.Set set = Sheet.createPropertiesSet();
        OUser obj = getOUser();

        try {
            Property UserNameProp = new PropertySupport.Reflection<String>(obj, String.class, "getUserName", null);
            UserNameProp.setName(Utils.getBundle().getString("LBL_UUserName"));
            set.put(UserNameProp);

            Property SavePasswordProp = new PropertySupport.Reflection<Boolean>(obj, Boolean.class, "getSavePassword", null);
            SavePasswordProp.setName(Utils.getBundle().getString("LBL_USavePassword"));
            set.put(SavePasswordProp);

            Property ConnectRoleProp = new PropertySupport.Reflection<RoleTypes>(obj, RoleTypes.class, "getConnectRole", null);
            ConnectRoleProp.setName(Utils.getBundle().getString("LBL_UConnectAs"));
            set.put(ConnectRoleProp);

            Property IsConnectedProp = new PropertySupport.Reflection<Boolean>(obj, Boolean.class, "getIsConnected", null);
            IsConnectedProp.setName(Utils.getBundle().getString("LBL_UConnected"));
            set.put(IsConnectedProp);

        } catch (NoSuchMethodException ex) {
            ErrorManager.getDefault();
        }

        sheet.put(set);
        return sheet;
    }

    @Override
    public Action getPreferredAction() {
        if (getOUser().getIsConnected()) {
            return SystemAction.get(DisconnectAction.class);
        } else {
            return SystemAction.get(ConnectAction.class);
        }
    }

    public void propertyChange(PropertyChangeEvent evt) {
        if ("UserName".equals(evt.getPropertyName())
                || "IsConnected".equals(evt.getPropertyName())) {
            this.resetChildren();
            this.fireDisplayNameChange(null, getHtmlDisplayName());
            this.ChangeIcon();
        }
    }
}
TOP

Related Classes of org.netbeans.modules.languages.pl_sql.editor.explorer.nodes.OUserNode

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.